package cn.itcast.crm.serviceimpl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.itcast.crm.dao.CostomerRepository;
import cn.itcast.crm.domain.Customer;
import cn.itcast.crm.service.CostomerService;

@Service
@Transactional
public class CostomerServiceImpl implements CostomerService {

	@Autowired
	public CostomerRepository costomerRepository;

	@Override
	public List<Customer> findNoAssociationCustomers() {
		return costomerRepository.findByFixedAreaIdIsNull();
	}

	// 一定记得传参
	@Override
	public List<Customer> findHasAssociationFixedAreaCustomers(
			String fixedAreaId) {
		return costomerRepository.findByFixedAreaId(fixedAreaId);
	}

	@Override
	public void associationCustomersToFixedArea(String customerIdStr,
			String fixedAreaId) {

		
		// 大致思路是，现将所有关联的用户全部取消关联，即将所有数据中fixedAreaId字段有值的数据全部赋值为null,
		// 然后再将传过来的被选中的数据的fixedAreaId赋值为选中的fixedAreaId，此时如果用户被移除到未绑定的select中，但是如果之前
		// 该用户关联了地区，但是在这里fixedAreaId字段被赋值给null，再次关联时，他的id已经不再关联区了，所以就不会被关联了，也就是移除绑定了
		//
		//select控件的option中，append就相当于是剪切的作用，即从select到另一个select它是将选中的option元素，直接剪切到另一个select中
		// 原先的select中就没有该option元素了
		
		// 解除关联动作
		costomerRepository.clearFixedAreaId(fixedAreaId);

		// 切割字符串1、2、3
		String[] strings = customerIdStr.split(",");
		for (String str : strings) {
			try {
				// 如果将全部的用户都移除绑定，则，该select会返回一个null这四个字母的的字符串给服务器，null不能被强转为integer类型的
				// 就会报错，我们遇到这总情况时，直接continue掉过本次循环即可
				Integer id = Integer.parseInt(str);
				costomerRepository.updateFixedAreaId(fixedAreaId, id);
			} catch (Exception e) {
				continue;
			}

		}

	}

}
